// 类的成员修饰符
// public  公共的  子类父类都可访问
// private 私有的  子类中不可访问
// protected 受保护的   在类内部和子类中可以访问

class Person {
  // 默认的是 public, 写和不写都一样
  public name: string = 'cht'
  // 使用 protected 只能在类的内部或者子类中访问
  protected cardId: number = 76545454
  // private表示私有的，例如：身份证id是不公开的所以设置为私有
  private id: number = 1212121211212
  // 使用private修饰只能在类的内部访问  getName获取值
  getId() {
    return this.id
  }
  setId(id: number) {
    this.id = id
  }
}
const p = new Person()
console.log(p.name);  // 可以访问
// consle.log(p.id) // 报错，因为id是private私有的，所以实例对象访问不到(设置值和取值都是禁止的)
// 如果想要访问，只能通过类的内部暴露的函数进行访问
console.log(p.getId()); // 可以获取得到私有的id
p.setId(1212121121121); // 设置id


// 创建一个Person的子类
class Student extends Person {
  // 父类中使用 protected 修饰的可以在子类中获取到通过this.xxx访问
  getCardId() {
    return this.cardId
  }
}
const stu = new Student();
console.log(stu.getCardId()) // 可以访问

export { }